#if !defined(__MOYENNEUR_H)
#define __MOYENNEUR_H

#include <iostream>

/**
 * Foncteur pour faire une moyenne de trucs qui s'additionnent et qui en se
 * divisant par des entiers donnent des U.
 */
template <class T, class U = double>
class moyenneur {
	int nb_appels_;
	T cumul_;
public:
	moyenneur() throw() : nb_appels_(0), cumul_(0) {}
	void operator()(T nouvelle_mesure) { ++nb_appels_; cumul_ += nouvelle_mesure; }
	operator U() const { return nb_appels_ == 0 ? 0 : cumul_ / nb_appels_ * 1.0; }
	int nb_echantillons() const { return nb_appels_; }
};

#endif

